跳到主要内容

06 EXTI

up的视频讲解

沿着“引脚 → 边沿检测 → 请求 → 响应”的路线,认识外部中断控制器。

1 EXTI 把电平变化变成事件​

EXTI 是外部中断/事件控制器。GPIO 可以读取当前是高电平还是低电平,而 EXTI 关注的是电平发生变化的瞬间,例如按键按下时出现的上升沿。

先找到输入、边沿检测、中断输出与事件输出四个部分。
先找到输入、边沿检测、中断输出与事件输出四个部分。

同一个检测结果可以进入不同通路:中断通路送往 NVIC,再由 CPU 执行处理程序;事件通路用于相应的硬件事件机制。两者不是同一个开关。

2 GPIO 如何接到中断线​

GPIO 外部中断使用 0~15 号线,编号与引脚编号对应。比如 PA0、PB0 都可映射到 EXTI0,但同一时刻这条线只能选择一个端口来源。

AFIO 在同编号引脚之间选择一个来源,送入对应的 EXTI 线。
AFIO 在同编号引脚之间选择一个来源,送入对应的 EXTI 线。

因此,选择中断引脚时既要看端口,也要看编号。并不是每一个 GPIO 都有完全独立的一条外部中断线。

3 边沿检测决定何时触发​

触发方式识别的变化按键电路中的理解方式
上升沿低电平变高电平按下后被拉高的信号
下降沿高电平变低电平按下后被拉低的信号
双边沿两种变化都检测同时关注按下与释放
触发依据是电平变化方向,先分析接线再选择边沿。
触发依据是电平变化方向,先分析接线再选择边沿。

4 顺着数字逻辑读懂请求通路​

或门:有一个条件成立就通过​

或逻辑可以把多个来源合并。硬件边沿与软件触发等来源,通过相关逻辑形成请求。

与门:条件同时满足才通过​

与逻辑用于控制请求是否放行。即使检测到了边沿,如果相应通路没有允许,请求也不会沿该通路继续传递。

把边沿检测、软件触发与屏蔽控制分开,再沿箭头串起来。
把边沿检测、软件触发与屏蔽控制分开,再沿箭头串起来。

IMR 控制中断通路,EMR 控制事件通路。读取结构图时,先找信号从哪里来,再看途中经过哪些条件,最后确认输出到哪里。

挂起标志:记录已经发生的事件​

触发发生后,挂起标志记录这个事件。处理程序需要按照寄存器规定清除标志,使后续事件能够被正确处理;在 STM32F1 的 EXTI 中,对相应挂起位写 1 清除。

事件发生、标志置位和处理后的清除,是一次完整响应的不同阶段。
事件发生、标志置位和处理后的清除,是一次完整响应的不同阶段。